package cn.fansunion.leecode.math;

/**
 * 342. 4的幂 给定一个整数，写一个函数来判断它是否是 4 的幂次方。如果是，返回 true ；否则，返回 false 。
 * 
 * 整数 n 是 4 的幂次方需满足：存在整数 x 使得 n == (4的x次方)
 * 
 * 来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/power-of-four 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * 
 * @author wen.lei@brgroup.com
 *
 *         2022-2-19
 */
public class PowerOfFour {

    /* 示例 1：
    
    输入：n = 16
    输出：true
    示例 2：
    
    输入：n = 5
    输出：false
    示例 3：
    
    输入：n = 1
    输出：true
     
    
    提示：
    
    -231 <= n <= 231 - 1
     
    
    进阶：你能不使用循环或者递归来完成本题吗？*/
    public boolean isPowerOfFour(int n) {
        // 4的x次方，如果为负数，肯定是个小数，而非整数
        if (n <= 0) {
            return false;
        }
        if (n == 1) {
            return true;
        }
        // >=4
        while (n >= 4) {
            if (n % 4 == 0) {
                n = n / 4;
            } else {
                return false;
            }
        }
        // 1
        return n == 1;
    }

    /**
     * 非循环递归解法
     * 
     * @param n
     * @return
     */
    public boolean isPowerOfFourNoWhile(int n) {
        return false;

    }
}
